今天接著DAY 27下去講,
Darknet-19 : 在Day 27的模型圖是Yolo v1的模型圖,並非v2的,v2採用了叫Darknet-19的模型,模型架構如下:
模型中包含19個卷積層,和5個Max Pooling層,卷積多為3x3,而Max Pooling為2x2,而原本v1中有24個卷積層,2個全連接層,因此計算量減少,使用了GAP(Global Average Pooling)來代替全連接層,並且也用到了Batch Normalization(BN)來穩定、加速模型。
Fine-Grained Features : 假如v2的輸入圖片大小為416x416,最後會輸出13x13的特徵圖,在檢測大物件的時候沒有甚麼問題,但是對一些小物件的特徵會淡化(不明顯),所以使用先前較為詳細的特徵圖來預測小物件,在v2中稱為passthrough,利用了26x26的特徵圖(最後一層Max Pooling的輸入),和後面13x13x1024的特徵圖連接,可是原本是26x26沒法直接連接到13x13,所以會先經過以下處理,
每次提取2x2並分別分配到4個區塊,當輸入是26x26x512時,輸出則為13x13x2048,這樣便可做連接,變成13x13x3072,並且用此特徵圖做預測。
Multi-Scale Training : Yolo在v2時將全連接層移除,所以輸入的圖像不會受其限制,但由於模型步長為32,所以輸入圖像的長寬為32的倍數(320、352、...、608),最小輸入為320x320,輸出是10x10,最大為608x608,輸出是19x19,並且在前一天有提到,v2希望輸出是奇數,所以輸入會再做限制。
不過以上這些不是Multi-Scale Training :D,Multi-Scale Training是指v2在每10個epoch會隨機選擇一種輸入的圖片大小,所以v2儘管對不同大小的圖片,都會有不錯的預測結果。
以上這些便是Yolo v2相對於v1主要改變的地方,這些技巧或是方法很多都是從其他的CNN模型中拿來做使用,最後讓v2不僅計算量比v1少,也提升了模型的準確率。
資料來源:https://blog.csdn.net/l7H9JA4/article/details/79955903